/*
* coder: Dzlua
* email: 505544956@qq.com
* time : 2018-04-24 18:43
*/
#pragma once
#ifndef __WINDOW_I_H__
#define __WINDOW_I_H__

#include <functional>

UI_BEGIN_NAMESPACE

class IWindow
    : public ATL::CWindowImpl<IWindow> {
public:
    virtual BOOL TranslateAccelerator(MSG* pMsg) = 0;
    virtual BOOL PreMessageHandler(MSG* pMsg) = 0;
    // ATL::CWindowImpl
    virtual void OnFinalMessage(_In_ HWND /*hWnd*/) = 0;
public:
    // for Accelerator
    UI_CLASS_SIMPLE_ARRAY_FUNS(std::function<bool(LPMSG)>, TranslateAccelerator)
    // for message fileter
    UI_CLASS_SIMPLE_ARRAY_FUNS(std::function<bool(LPMSG)>, MessageFilter)
};

UI_END_NAMESPACE

#endif
